#!/usr/bin/env python
# -*- coding: utf-8 -*-
"""
演示和测试脚本 - 展示完整的图片定制工具功能
"""

import json
import sys
from pathlib import Path
from database import template_dao, region_dao, project_dao
from image_processor import ImageProcessor

def create_demo_template():
    """创建演示底板"""
    print("🎯 创建演示底板...")
    
    # 创建一个测试底板
    template_id = template_dao.create_template(
        name="演示底板",
        width=1350,
        height=1350,
        description="用于演示的底板，尺寸与JSON示例匹配"
    )
    
    print(f"✅ 底板创建成功，ID: {template_id}")
    
    # 创建与JSON匹配的定制区域
    region1_id = region_dao.create_region(
        template_id=template_id,
        name="区域1",
        x=223,
        y=847,
        width=431,
        height=422
    )
    
    region2_id = region_dao.create_region(
        template_id=template_id,
        name="区域2", 
        x=786,
        y=68,
        width=446,
        height=452
    )
    
    print(f"✅ 区域1创建成功，ID: {region1_id}")
    print(f"✅ 区域2创建成功，ID: {region2_id}")
    
    return template_id, [region1_id, region2_id]

def test_json_processing():
    """测试JSON文件处理"""
    print("\n🧪 测试JSON文件处理...")
    
    json_file = Path("定制json文件.json")
    if not json_file.exists():
        print("❌ JSON示例文件不存在")
        return None
    
    with open(json_file, 'r', encoding='utf-8') as f:
        json_data = json.load(f)
    
    print(f"✅ JSON文件读取成功")
    print(f"   产品SKU: {json_data.get('productSkuId')}")
    
    # 解析surfaces数据
    surfaces = json_data.get('surfaces', [])
    if surfaces:
        surface = surfaces[0]
        regions = surface.get('regions', [])
        print(f"   找到 {len(regions)} 个区域")
        
        for i, region in enumerate(regions):
            elements = region.get('elements', [])
            print(f"   区域 {i+1}: {len(elements)} 个元素")
            
            for j, element in enumerate(elements):
                image_url = element.get('image_url', '')
                if image_url:
                    print(f"     元素 {j+1}: {image_url[:50]}...")
    
    return json_data

def test_image_generation(template_id, json_data):
    """测试图片生成"""
    print("\n🖼️ 测试图片生成...")
    
    # 获取底板和区域信息
    template = template_dao.get_template_by_id(template_id)
    regions = region_dao.get_regions_by_template(template_id)
    
    print(f"✅ 底板信息: {template['name']} ({template['width']}x{template['height']})")
    print(f"✅ 区域数量: {len(regions)}")
    
    # 准备定制数据
    customization_data = {
        'regions': {}
    }
    
    # 处理JSON中的区域数据
    surfaces = json_data.get('surfaces', [])
    if surfaces and 'regions' in surfaces[0]:
        json_regions = surfaces[0]['regions']
        
        # 将JSON区域数据映射到我们的区域
        for i, json_region in enumerate(json_regions):
            if i < len(regions):
                customization_data['regions'][str(i)] = json_region
    
    # 使用图像处理器生成图片
    processor = ImageProcessor()
    
    try:
        result_path = processor.create_customized_image(
            template=dict(template),
            regions=[dict(region) for region in regions],
            customization_data=customization_data
        )
        
        print(f"✅ 图片生成成功: {result_path}")
        return result_path
        
    except Exception as e:
        print(f"❌ 图片生成失败: {e}")
        return None

def show_demo_summary():
    """显示演示总结"""
    print("\n" + "="*60)
    print("🎉 图片定制工具演示完成！")
    print("="*60)
    print("✨ 主要功能:")
    print("   📋 底板裁片管理 - 创建、编辑、删除底板")
    print("   📤 TIF文件上传 - 支持上传底板图片文件") 
    print("   🎨 可视化编辑 - 拖拽调整图片位置和大小")
    print("   📊 JSON解析 - 自动解析定制配置文件")
    print("   🖼️ 图片合成 - 生成最终的定制图片")
    print("   💎 现代化界面 - 企业级工作台设计")
    print()
    print("🚀 启动应用:")
    print("   python run.py")
    print()
    print("🌐 访问地址:")
    print("   http://localhost:5000")
    print("="*60)

def main():
    """主演示函数"""
    print("🎨 图片定制工具 - 完整功能演示")
    print("="*60)
    
    try:
        # 1. 创建演示底板
        template_id, region_ids = create_demo_template()
        
        # 2. 测试JSON处理
        json_data = test_json_processing()
        
        # 3. 测试图片生成
        if json_data:
            result_path = test_image_generation(template_id, json_data)
            
            if result_path:
                print(f"\n🎯 演示图片已生成: {result_path}")
                print("   您可以在exports目录中查看生成的图片")
        
        # 4. 显示总结
        show_demo_summary()
        
        return True
        
    except Exception as e:
        print(f"❌ 演示过程中出现错误: {e}")
        return False

if __name__ == '__main__':
    success = main()
    sys.exit(0 if success else 1)
